#ifndef __DICTPRODUCER_HPP__
#define __DICTPRODUCER_HPP__

#include <string>
#include <vector>
#include <map>
#include <set>
#include <unordered_set>
#include <memory>

using std::string;
using std::vector;
using std::map;
using std::set;
using std::unordered_set;
using std::pair;
using std::shared_ptr;

class SplitTool;

class DictProducer
{
public:
    DictProducer(){}
    ~DictProducer(){}

    void buildEnDict();//英文词典库
    void buildCnDict();//中文词典库
private:
    void createEnIndex(const string & word,int x);//英文索引库
    void createCnIndex(const string &, int);//中文索引库
public:
    void enStore(const string &, const string &);
    void cnStore(const string &, const string &);
private:
    void preProcessLine(string &line);
    string censorStrWithOutSymbol(const string &source);
    //可以再度去除无效的词,只在中文Jieba之前用
    //
private:
    vector<string> _files;
    map<string,int> _dict;
    map<string, int> _cndict;
    //中文和英文的词库
    //
    map<char,set<int>> _index;//单词+行号
    map<string,set<int>> _cnIndex;//单词+行号
    //中文和英文的索引库
    //
    unordered_set<string> _stop;
    //中英文放一起的停用词库
    //
    SplitTool * _cuttor;
};
 

#endif
